本章我们将会使用可视化工具来分析苏菲的世界中,哲学家都在讨论什么八卦内容?这个问题最终可以抽象成“苏菲的世界中,涉及到的问题和回答的关键词是什么?”
# 任务分析
这个问题需要分析哲学问题和回答的关键词,分成几步:
- 罗列出问题和回答,然后将问题和回答进行分词,获得所有关键词以及出现频次,获得要分析的数据
- 使用词云图对关键词数据进行可视化,配合字体大小、颜色和频次关联,获得更好的视觉效果
- 获取数据洞察
下面会按照这几个步骤,去实现这样的一个词云图,并从中获得数据洞察。
# 数据处理
首先我们从《苏菲的世界》中,获取所有问题列表,以及所有的回答列表,然后使用社区开源的 nodejieba 进行关键词抽取。
const nodejieba = require('nodejieba');
const topN = 5;
const keywords = nodejieba.extract('世界上根本没有真正的变化,没有任何事物可以变成另外一种事物。', topN);
@前端进阶之旅: 代码已经复制到剪贴板
这里就不去过多介绍了,最后获取的关键词数据放在 GitHub 上(问题、回答观点)。
# 用 Sparrow 绘制词云
所谓的词云就是将关键字互不重叠的在画布上排列展示,文字的大小和词云的关键程度呈正相关。
因为 Sparrow 本身没有实现词云布局算法,所以这里我们将先使用 d3-cloud 去对词语进行布局,然后再用 Sparrow 去绘制。

(async () => {
// 获得数据
const response = await fetch(
"https://gw.alipayobjects.com/os/bmw-prod/d345d2d7-a35d-4d27-af92-4982b3e6b213.json"
);
const data = await response.json();
